IF exists(SELECT * FROM dbo.sysobjects WHERE name='geefRoosterVariant' AND xtype='P') 
BEGIN
	DROP PROCEDURE geefRoosterVariant
END
GO

create  procedure geefRoosterVariant
as
declare @dag datetime
declare @zondag datetime
declare @maandag datetime
declare @dinsdag datetime
declare @woensdag datetime
declare @donderdag datetime
declare @vrijdag datetime

set @dag = getdate()
set @zondag = dateAdd(d,1 - datePart(dw,@dag),@dag)
set @maandag = dateAdd(d,2 - datePart(dw,@dag),@dag) 
set @dinsdag = dateAdd(d,3 - datePart(dw,@dag),@dag)
set @woensdag = dateAdd(d,4 - datePart(dw,@dag),@dag)
set @donderdag = dateAdd(d,5 - datePart(dw,@dag),@dag)
set @vrijdag = dateAdd(d,6 - datePart(dw,@dag),@dag)

print @maandag
print @dinsdag
print @woensdag

-- Bepalen van de roostervarianten.

declare @vandaag dateTime
declare @datum dateTime
declare @var varchar(10)
declare @ma varchar(10)
declare @di varchar(10)
declare @wo varchar(10)
declare @do varchar(10)
declare @vr varchar(10)

declare kalender cursor for
select variant,datum from leerlingen..kalender 
where (datum > @zondag) and (datum <= @vrijdag)
order by datum
open kalender
fetch next from kalender into @var,@datum
while (@@fetch_status = 0)
begin
	if datepart(dw,@datum) = 2 set @ma = '%' + @var + '%'
	if datepart(dw,@datum) = 3 set @di = '%' + @var + '%'
	if datepart(dw,@datum) = 4 set @wo = '%' + @var + '%'
	if datepart(dw,@datum) = 5 set @do = '%' + @var + '%'
	if datepart(dw,@datum) = 6 set @vr = '%' + @var + '%'
	fetch next from kalender into @var,@datum
end
close kalender
deallocate kalender

-- Vullen van een hulptabel van leraarsnamen met relevante varianten

select distinct deLeraar into #leraarsVariant 
from rooster where  
	not (variant is null) and 
	  (((deDag = 'ma') and charIndex(variant,@ma) > 0) or
	   ((deDag = 'di') and charIndex(variant,@di) > 0) or
	   ((deDag = 'wo') and charIndex(variant,@wo) > 0) or
	   ((deDag = 'do') and charIndex(variant,@do) > 0) or
	   ((deDag = 'vr') and charIndex(variant,@vr) > 0))

-- Opzoeken van de gegevens. 
-- Als de leraar een variant heeft, 
-- wordt deze gebruikt in plaats van het standaardlokaal.

(select deLeraar,hetVak,deKlas,deDag,hetUur,hetLokaal
  from rooster 
  where not deLeraar in (select deLeraar from #leraarsVariant)
	and (variant is null))
union 
(select deLeraar,hetVak,deKlas,deDag,hetUur,hetLokaal
 from rooster where 
	 (deLeraar in (select deLeraar from #leraarsVariant) and 
	  ((deDag = 'ma') and charIndex(variant,@ma) > 0) or
	  ((deDag = 'di') and charIndex(variant,@di) > 0) or
	  ((deDag = 'wo') and charIndex(variant,@wo) > 0) or
	  ((deDag = 'do') and charIndex(variant,@do) > 0) or
	  ((deDag = 'vr') and charIndex(variant,@vr) > 0)))
 order by deLeraar